package cn.tedu.charging.device.handler;


import cn.tedu.charging.device.po.StationCanalPO;
import cn.tedu.charging.device.repository.DeviceRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

@Component
@Slf4j
//变动表格 charging_station
@CanalTable("charging_station")
public class StationHanlder implements EntryHandler<StationCanalPO> {
    @Autowired
    private DeviceRepository deviceRepository;
    //重写接口父类中的三个方法insert update delete

    /**
     * 每当有客户端在数据库insert新增数据
     * canal会同步给这个方法一个stationCanalPO对象
     * @param stationCanalPO
     */
    @Override
    public void insert(StationCanalPO stationCanalPO) {
        log.info("新增数据:{}",stationCanalPO);
        //调用仓储层 根据id读取最新数据信息,封装到geo同时 写入string
        deviceRepository.canalInsert(stationCanalPO);
    }

    /**
     * 每当数据库客户端修改了一个场站数据 canal会根据修改的字段传递before提示修改前数据
     * 将完整修改后的对象传递after
     * @param before
     * @param after
     */
    @Override
    public void update(StationCanalPO before, StationCanalPO after) {
        log.info("更新数据before:{},after:{}",before,after);
        deviceRepository.canalUpdate(before,after);
    }
    /**
     * 每当数据库客户端删除了一个场站数据
     * canal会同步给这个方法一个stationCanalPO对象
     * @param stationCanalPO
     */
    @Override
    public void delete(StationCanalPO stationCanalPO) {
        log.info("删除数据:{}",stationCanalPO);
        deviceRepository.canalDelete(stationCanalPO);
    }
}
